Skip to main content

Verwenden von Haltepunkten

Haltepunkte (Breakpoints) werden üblicherweise zur Fehlersuche im Programm genutzt. CODESYS unterstützt Haltepunkte in allen IEC-Editoren.

Sie können Haltepunkte an bestimmten Positionen im Programm setzen, um dort einen Ausführungsstopp zu erzwingen und die Variablenwerte zu beobachten. Sie können spezielle „Datenhaltepunkte“ setzen, um die Programmausführung anzuhalten, wenn sich der Wert einer bestimmten Variablen ändert.

Der Stopp am Haltepunkt oder Datenhaltepunkt kann an zusätzliche Bedingungen geknüpft werden. Sie können Haltepunkte und Datenhaltepunkte auch zu „Ausführungspunkten“ umdefinieren, an denen das Programm nicht stoppt, sondern bestimmter Code abgearbeitet wird.

Tipp

Die Ansicht Haltepunkte gibt eine Übersicht über alle definierten Haltepunkte. Darin stehen Ihnen zusätzliche Befehle zum gleichzeitigen Ändern mehrerer Haltepunkte zur Verfügung.

Im Editor wird der Status von Haltepunkten und Ausführungspunkten mit folgenden Symbolen markiert:

  • _cds_icon_breakpoint_activated.png: Der Haltepunkt ist aktiviert.

  • _cds_icon_breakpoint_deactivated.png: Der Haltepunkt ist deaktiviert.

  • _cds_icon_breakpoint_in_other_instance.png: Der Haltepunkt ist in einer anderen Instanz des gerade im Editor geöffneten Bausteins gesetzt.

  • _cds_icon_breakpoint_halt.png: Das Programm hält am Haltepunkt an.

  • _cds_icon_breakpoint_conditional_activated.png: Der Haltepunkt mit Bedingung ist aktiviert.

  • _cds_icon_breakpoint_conditional_deactivated.png: Der Haltepunkt mit Bedingung ist deaktiviert.

  • _cds_icon_executionpoint_activated.png: Der Ausführungspunkt ist aktiviert.

  • _cds_icon_executionpoint_deactivated.png: Der Ausführungspunkt ist deaktiviert.

  • _cds_icon_executionpoint_conditional_activated.png: Der Ausführungspunkt mit Bedingung ist aktiviert.

  • _cds_icon_executionpoint_conditional_deactivated.png: Der Ausführungspunkt mit Bedingung ist deaktiviert.

  • _cds_icon_data_breakpoint_activated.png: Der Datenhaltepunkt ist aktiviert.

  • _cds_icon_data_breakpoint_disabled.png: Der Datenhaltepunkt ist deaktiviert.

  • _cds_icon_data_breakpoint_halt.png: Das Programm hält am Datenhaltepunkt an.

  • _cds_icon_data_execution_point_enabled.png: Der Datenausführungspunkt ist aktiviert.

  • _cds_icon_data_execution_point_disabled.png: Der Datenausführungspunkt ist deaktiviert.

  • _cds_icon_data_executionpoint_halt.png: Das Programm hält am Datenausführungspunkt an.

  • _cds_icon_data_executionpoint_cond_activated.png: Der Datenausführungspunkt mit Bedingung ist aktiviert.

  • _cds_icon_data_breakpoint_cond_activated.png: Der Datenhaltepunkt mit Bedingung ist aktiviert.

Für weitere Informationen siehe: Haltepunkte

Datenhaltepunkte

Tipp

Die Funktion der Datenhaltepunkte ist vom Zielsystem abhängig. Aktuell sind Datenhaltepunkte nur mit der CODESYS Control Win möglich.

An einem Datenhaltepunkt hält die Programmabarbeitung an, wenn sich der Wert einer bestimmten Variablen oder Speicheradresse ändert. Wie bei „normalen“ Haltepunkten kann der Stopp an eine zusätzliche Bedingung geknüpft werden, oder kann statt des Stopps bestimmter Code abgearbeitet werden (Umwandlung in einen Datenausführungspunkt).

Sie setzen einen Datenhaltepunkt mit dem Befehl Neuer Datenhaltepunkt entweder aus dem Menü Debug, oder in der Ansicht Haltepunkte über die Schaltfläche Neu. Sie geben dabei einen qualifizierten Variablennamen oder direkt eine Speicheradresse an, die auf Änderung ihres Werts überwacht werden soll.

Beispiel 37. Beispiel

Im folgenden Beispielcode wird der Speicherplatz von Variable iNumber ungewollt überschrieben. Mit einem Datenhaltepunkt auf der Variablen iNumber wird jedoch bemerkt, wenn sich ihr Wert ändert. Die Abarbeitung bleibt dann mit einer entsprechenden Meldung bei dem Arrayzugriff stehen, welcher den Variablenwert überschreibt: Idx = 7.

Sehen Sie dazu auch weiter unten: „Setzen eines Datenhaltepunkts“

PROGRAM PLC_PRG
VAR
  Idx : INT;
  Ary : ARRAY[0..3] OF BYTE;
  iNumber : INT := 55;
END_VAR
FOR idx := 0 TO 6 DO
  Ary[idx] := 0;
END_FOR


Haltepunkte in Applikationen mit mehreren Tasks

Grundsätzlich gilt: Debugging ist nicht auf mehreren Tasks gleichzeitig möglich. Solange Sie auf einer Task mit Haltepunkten oder schrittweiser Abarbeitung arbeiten, werden Haltepunkte in anderen Tasks ignoriert.

Wenn ein Baustein, in dem ein Haltepunkt gesetzt ist, von mehreren Tasks verwendet wird, dann wird nur die Task („Debug-Task“) angehalten, die zuerst auf den Haltepunkt trifft. Alle anderen Tasks laufen weiter. Im Dialog Aufrufliste sehen Sie, welche Task gerade angehalten wird.

Wenn Sie wollen, dass nur eine bestimmte Task von einem Haltepunkt betroffen sein soll, können Sie dies in den Haltepunkteigenschaften festlegen.

Haltepunkte funktionieren für jede Applikation separat, so dass ein „Halt auf BP“ keine andere Applikation betrifft. Dies gilt auch für Vater/Kind-Applikationen, sogar wenn der Haltepunkt in einem Baustein gesetzt ist, der von mehreren Applikationen verwendet wird und dessen Code nur einmal auf der SPS liegt.

Wichtig

Die E/As, die von der „Debug-Task“ bedient werden, werden bei einem Stop im Haltepunkt nicht aktualisiert, auch wenn Sie die Option E/As aktualisieren im Stop in den SPS-Einstellungen aktiviert haben.

Tipp

Wenn die Applikation auf der SPS an einem Haltepunkt steht, erzeugt ein Online Change oder Download ein Stoppen aller Tasks, was ein Stop der SPS bedeutet! In diesem Fall zeigt CODESYS eine entsprechende Meldung an und Sie können entscheiden, ob Sie mit dem Login fortfahren wollen oder nicht.

Setzen eines einfachen Haltepunkts (Beispiel ST-Editor)

Voraussetzung: Die Applikation ist im Onlinebetrieb und läuft. Der Operating Mode ist Debug.

  1. Öffnen Sie eine POU in der Sprache ST im Editor.

  2. Setzen Sie den Cursor in die Zeile, in der ein Haltepunkt gesetzt werden soll.

  3. Wählen Sie den Befehl Debug → Haltepunkt umschalten oder drücken Sie die Taste F9.

    Die Zeile wird rot markiert und mit dem Icon _cds_icon_breakpoint_activated.png (Haltepunkt aktiviert) gekennzeichnet. Wenn das Programm an dem Haltepunkt steht, wird die Zeile mit dem Icon _cds_icon_breakpoint_halt.png (Stop an Haltepunkt) gekennzeichnet. Die Abarbeitung des Programms stoppt. Dies wird in der Statuszeile mit dem rot hinterlegten Status HALT AUF BP signalisiert.

  4. Wählen Sie den Befehl Debug → Start oder drücken Sie die Taste F5.

    Das Programm läuft weiter.

  5. Setzen Sie weitere Haltepunkte und überprüfen Sie an den Haltepositionen die Werte von Variablen.

  6. Setzen Sie den Cursor in eine Zeile, in der ein Haltepunkt gelöscht werden soll.

  7. Wählen Sie den Befehl Debug → Haltepunkt umschalten oder drücken Sie die Taste F9.

    Die Markierung verschwindet. Der Haltepunkt ist gelöscht.

Festlegen einer Haltepunkt-Bedingung (Beispiel ST-Editor)

  1. Öffnen Sie eine POU in der Sprache ST im Editor.

  2. Setzen Sie den Cursor in die Zeile, in der ein Haltepunkt gesetzt werden soll.

  3. Wählen Sie den Befehl Debug → Neuer Haltepunkt.

    Es öffnet sich der Dialog Neuer Haltepunkt.

  4. Wählen Sie die Registerkarte Bedingung.

  5. Wählen Sie im Abschnitt Trefferzahl die Option Anhalten, wenn die Trefferzahl ein Vielfaches ist von.

    Geben Sie im Feld rechts daneben den Wert 5 ein.

  6. Definieren Sie zusätzlich noch eine boolesche Bedingung, wann der Haltepunkt aktiv sein soll. Aktivieren Sie dazu die Option Halt, wenn True. Geben Sie im Feld rechts daneben eine boolesche Variable ein.

  7. Aktivieren Sie die Option Haltepunkt sofort aktivieren.

  8. Schließen Sie den Dialog.

    Die Zeile wird rot markiert und mit dem Icon _cds_icon_breakpoint_conditional_activated.png gekennzeichnet.

Beobachten Sie nun das laufende Programm. Solange die boolesche Variable für die Bedingung FALSE ist, ist die Bedingung für den Haltepunkt nicht erfüllt und das Programm läuft. Wenn Sie die Variable auf TRUE setzen, ist die Bedingung erfüllt und das Programm bleibt bei jedem 5. Durchlauf an diesem Haltepunkte stehen.

Festlegen eines Ausführungspunkts (Beispiel ST-Editor)

  1. Öffnen Sie eine POU in der Sprache ST im Editor.

  2. Setzen Sie den Cursor in die Zeile, in der ein Ausführungspunkt gesetzt werden soll.

  3. Wählen Sie den Befehl Debug → Neuer Haltepunkt.

    Es öffnet sich der Dialog Neuer Haltepunkt.

  4. Wählen Sie die Registerkarte Ausführungspunkt Einstellungen.

  5. Aktivieren Sie die Option Ausführungspunkt.

    Geben Sie im Feld Folgenden Code ausführen folgende Anweisung ein:

    iCounter := iCounter + 1;

    Geben Sie im Feld Meldung im Geräte-Log ausgeben folgenden Text ein:

    Ausführungspunkt erreicht {iCounter}

  6. Schließen Sie den Dialog.

Wenn das Programm den Ausführungspunkt erreicht, bleibt es nicht stehen, sondern es wird der oben definierte Code ausgeführt. Zusätzlich wird eine Meldung im Geräte-Log ausgegeben.

Setzen eines Datenhaltepunkts

Voraussetzung: Die Applikation ist im Onlinebetrieb und läuft.

  1. Wählen Sie den Befehl Ansicht → Haltepunkte.

  2. Wählen Sie den Befehl Debug → Neuer Datenhaltepunkt.

  3. Klicken Sie im Dialog Neuer Haltepunkt in der Registerkarte Daten auf die Schaltfläche _cds_icon_input_assistent.png.

  4. Wählen Sie im Dialog Eingabehilfe in der Registerkarte Watch-Variablen die Variable aus, bei deren Wertänderung das Programm anhalten soll.

    Alternativ geben Sie in der Registerkarte Daten in die Eingabezeile direkt den qualifizierten Namen der Variablen ein. Beispiel: PLC_PRG.iNumber. Die genaue Anzahl der zu überwachenden Bytes wird als Größe angegeben. Automatisch ist hier ein dem Datentyp entsprechender Wert vorgegeben, Sie können aber auch weniger Bytes überwachen lassen.

  5. Selektieren Sie in der Ansicht Haltepunkte die Zeile mit dem Datenhaltepunkt und klicken Sie auf die Schaltfläche _cds_icon_breakpoint_activated_deactivate.png.

    Die Zeile wird markiert und mit dem Icon _cds_icon_data_breakpoint_activated.png (Datenhaltepunkt aktiviert) gekennzeichnet. Wenn das Programm den Datenhaltepunkt erreicht, das heißt, wenn sich der Wert der ausgewählten Variablen ändert, stoppt die Abarbeitung des Programms. Im Implementierungsteil des Bausteins wird die Folgezeile mit einem Pfeil _cds_icon_data_executionpoint_halt.png gekennzeichnet. Dies wird in der Statuszeile mit dem rot hinterlegten Status HALT AUF BP signalisiert.

  6. Wählen Sie den Befehl Debug → Start oder drücken Sie die Taste F5.

    Das Programm läuft weiter und bleibt dann wieder stehen, wenn sich der Wert der Variablen erneut ändert.